CBMSTEVE.CA - Personal pages of Steve J. Gray |
Changes | Info | Prototypes | Remakes | PET Projects | CBM Projects | Modding | 3D Models | KiCad | Github | Ohio Scientific | Other | My Software | My Collections | Facebooks |
Welcome to the Commodore VYMS Cart Project Page! VYMS gets it's name from the two major chips on it, plus the Serial Port:
The V9958 Video Display Processor (VDP) has many screen modes including 80-column text, and outputs in analog RGB mode. It uses it's own dedicated display RAM (VRAM) which doesn't take up any space in the CPU's memory map (much like the Commodore VDC chip in the C128). The YM2413 is a small but full-sounding audio chip with a built-in DAC, thus requiring a small footprint with less supporting components.
I chose these two chips for functionality and space. My plan is to create a simple C64 cartridge so that I can learn how they work and explore their capabilities in a 6502 environment. Also, I will look into adapting the design to the VIC-20 and/or other Commodore machines.
The goal of this project is not to produce a commercial product, but rather for learning to produce a Commodore cartridge and how the Yamaha VDP and sound chip operate. Comments, suggestions, feedback are welcome.
The V9958 is the main chip. It was used in the MSX2+ computers. The chip is an all-in-one video display processor, only needing RAM and a clock to generate RGB analog video. It can support up to 192K of RAM, has 40x24 and 80x24 character text modes, and graphics modes with resolution of 256 x 212 or 512 x 212 pixels. It can support 16 colours from a palette of 512, and also has special colour modes with up to 19,268 colours. It supports up to 32 sprites with 16 colours each, hardware acceleration for line drawing and memory operations. It also supports interlacing for double vertical resolution, and hardware smooth scrolling.
The YM2413 is a 9 voice sound chip also used in MSX2+ computers. I has 15 preset instruments. This chip is different from most Yamaha sound chips in that it has a built-in DAC so no other chip is necessary for a complete sound generator.
The Commodore MOS 6551 ACIA chip is used to give the cart RS-232 capabilities. This allows the cart to be compatible with existing communications software. There is a MAX238 line driver chip that converts the 6551's TTL serial to proper RS-232 standards.
The VDP chip is designed with the Z80 processor in mind, so it needs a simple circuit to adapt it to 6502. The /CSW and /CSR must be generated from the R/W signal and /CS. The VDP supports up to 192K of VRAM using standard 41464 DRAM chips. I will use 64K for now to minimize PCB space. It needs a 21.47727 MHz clock and also outputs an NTSC colour carrier clock for use with video encoding chips. Video will be output as RGB, Composite and S-Video using a SONY CXA1645 encoder chip.
The YM chip needs an NTSC clock to drive it. It has two audio outputs (Melody and Rythm) that are combined into one. Audio will be output on an RCA connector.
The 6551 has it's own crystal to determine baud rates. The 6551's TTL serial lines will be converted to standard RS-232 voltages using a MAX238 line driver chip. There is a jumper block that sets the interrupt output to either IRQ or NMI.
The C64 and VIC-20 both have two dedicated lines for I/O expansion. There is a jumper block where you can select which IO range to use. All three chips will map into that range as follows:
CHIP | C64 IO1 | C64 IO2 | VIC IO2 | VIC IO3 |
6551 | $DE00-DE1F | $DF00-DF1F | $9600-961F | $9C00-9C1F |
V9958 | $DE20-DE3F | $DF20-DF3F | $9620-963F | $9C20-9C3F |
YM2413 | $DE40-DE5F | $DF40-DF5F | $9640-965F | $9C40-9C5F |
This will allow the card to co-exist with other expansion devices when used with a slot expander, or on a C128.
Most VDP systems were MSX compatible, therefore they have a Z80 processor. On the C64 and VIC-20 the CPU is a 6502-compatible chip, so software must be written from scratch. I decided not to include an EPROM socket on the VYM card in order to save space, so software will need to be loaded in from disk or tape. I will look for some MSX code to see how the chip registers are set up and translate that to 6502 code. The VDP does not have a built-in character set, so the computer's set will need to be transfered into the VDP memory. The initial goal will be to verify operation of the cartridge by getting some simple text on the screen in both 40 and 80 columns. After that perhaps the screen routines and editor can be patched to allow the VDP to be used just like the normal text screen.
This is the first prototype cartridge, with Video and Audio. A board has been made but has errors. I had started populating the test board before I noticed the errors. The board will need some traces fixed, the video encoder jammed on somehow, and probably to dead-bug the audio chip. Because of this progress has been halted. I may abandon this board and just run the new boards below... not sure.
The enhanced VYMS cart now includes RS-232 port and 192K VRAM. This board has not been produced yet. I still need to verify part footprints.
This is based on the VYMS cart before the extra ram was added. This board has not been produced yet. I still need to verify part footprints.
Kicad was used to design the first VYM board for the C64. The schematics are complete. A prototype board was created and ordered. While waiting for VYM proto board I modified the design to add the serial port. Initially this had 64K VRAM. Later I expanded the design to 192K VRAM which became the VYMS64. I have also designed a VIC-20 version of the 64K VYMS board.
The original VYM prototype boards arrived and was being populating, but is currently on hold.
Here are the problems with the VYM prototype board that I have found so far:
Thanks to Dave Stevenson for help with the schematics and parts libraries. You can see Dave's MTX-80 Video card here. It was very helpful!
Thank-you to Jim Brain for designing and making available schematics for his LINK-232 cart, which has been adapted for use in my VYMS cart.
Thank-you to Francois Leveille for helping with the VIC-20 RAM circuit.
Page Created: Aug 23/2016. Last updated: Jan 23/2018, 3:00pm EST
Send comments or feedback to Steve Gray(sjgray@rogers.com)